unit Main;

{$mode objfpc}{$H+}

//========================================================================================
//
// Unit : Main.pas
//
// Description :
//
// Called By :
//
// Calls : ApplicationDebug : DebugApplication
//         DevSetup : frmDevSetup.ShowModal
//         FeedingCategoryTable : ShowModal
//         Final : Finalize
//         Init : Initialize
//         TankTable : TfrmTankTable.CreateNewTank
//
// Ver. : 1.0.0
//
// Date : 14 Nov 2016
//
//========================================================================================

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Menus,
  ComCtrls,
  // Application units
  ApplicationDebug, ApplicationSettings{, FeedingCategoryTable}, Final,
  {AppWaterTestsTable, DevSetup,}
  Init, MeasurementUnitTable, TankTable;

type

  { TfrmMain }

  TfrmMain = class(TForm)
    MenuItem1: TMenuItem;
    mnuConfigureApplicationDataDefaultMeasurementUnits: TMenuItem;
    mnuConfigureDefaultTankData: TMenuItem;
    mnuConfigureDebug: TMenuItem;
    mnuConfigureApplicationData: TMenuItem;
    mnuSetupSettings: TMenuItem;
    mnuFileExit: TMenuItem;
    mnuFileSep1: TMenuItem;
    mnuFileNewTank: TMenuItem;
    mnuFile: TMenuItem;
    mnuHelp: TMenuItem;
    mnuSetup: TMenuItem;
    mnuMain: TMainMenu;
    OpenDialog1: TOpenDialog;
    StatusBar1: TStatusBar;
    ToolBar1: TToolBar;
    ToolBar2: TToolBar;
    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure mnuConfigureApplicationDataDefaultMeasurementUnitsClick(
      Sender: TObject);
    procedure mnuFileExitClick(Sender: TObject);
    procedure mnuFileNewTankClick(Sender: TObject);
    procedure mnuSetupSettingsClick(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  frmMain: TfrmMain;

const
  cstrApplicationName = 'AquaSuperLog';
  cstrApplicationVersion = '1.0.0';
  cstrApplicationDate = '19 December 2016';

implementation

{$R *.lfm}

//========================================================================================
//          PROPERTY ROUTINES
//========================================================================================

//========================================================================================
//          SUPPORT ROUTINES
//========================================================================================

//========================================================================================
//          FUNCTIONAL ROUTINES
//========================================================================================

//========================================================================================
//          MENU ROUTINES
//========================================================================================

//========== FILE MENU ===================================================================

procedure TfrmMain.mnuFileNewTankClick(Sender: TObject);
begin
  frmTankTable.CreateNewTank;
end;// procedure TfrmMain.mnuFileNewTankClick

//----------------------------------------------------------------------------------------
procedure TfrmMain.mnuFileExitClick(Sender: TObject);
begin
  frmMain.Close;
end;// procedure TfrmMain.mnuFileExitClick

//========== SETTINGS MENU ===============================================================
procedure TfrmMain.mnuSetupSettingsClick(Sender: TObject);
begin
  frmSettings.ShowModal;
end;// procedure TfrmMain.mnuSetupSettingsClick

//========== CONFIGURE MENU ==============================================================
procedure TfrmMain.mnuConfigureApplicationDataDefaultMeasurementUnitsClick(
  Sender: TObject);
begin
  frmMeasurementUnitTable.ShowModal;
end;// procedure TfrmMain.mnuConfigureApplicationDataDefaultMeasurementUnitsClick

//========== HELP MENU ===================================================================

//========================================================================================
//          TOOLBAR ROUTINES
//========================================================================================

//========================================================================================
//           STATUSBAR ROUTINES
//========================================================================================

//========================================================================================
//          FILE ROUTINES
//========================================================================================

//========================================================================================
//          DATABASE ROUTINES
//========================================================================================

//========================================================================================
//          COMMAND BUTTON ROUTINES
//========================================================================================

//========================================================================================
//          CONTROL ROUTINES
//========================================================================================

//=========================
//  OnChange Routines
//=========================

//=========================
//  OnClick Routines
//=========================

//=========================
//  OnKeypress Routines
//=========================

//========================================================================================
//          FORM ROUTINES
//========================================================================================
procedure TfrmMain.FormShow(Sender: TObject);
begin
  if not Initialize then
  begin
    showmessage('Application Terminating');
    Application.Terminate;
  end;
end;// procedure TfrmMain.FormShow(Sender: TObject);

//========================================================================================
procedure TfrmMain.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
  Finalize;
end;// procedure TfrmMain.FormClose

//========================================================================================
end.// unit Main;

